#include "bulk_mem_copy.h"

/*
 * 自定义内存复制函数，处理重叠区域，类似 memmove。
 * 返回值：成功返回 0，失败返回 -1。
 */
int bulk_mem_copy(unsigned char *to, unsigned char *from, int len) {
    if (!to || !from || len < 0) 
    {
   	 return -1;
    }


    /* 若目标地址小于源地址，正向复制 */
    if (to < from || to >= from + len) {
        for (int i = 0; i < len; ++i) {
            to[i] = from[i];
        }
    } else {
        /* 若目标地址大于源地址，反向复制以防覆盖 */
        for (int i = len - 1; i >= 0; --i) {
            to[i] = from[i];
        }
    }

    return 0;
}
